more OsPath conversion
authorJoey Hess <joeyh@joeyh.name>
Wed, 29 Jan 2025 20:24:51 +0000 (16:24 -0400)
committerJoey Hess <joeyh@joeyh.name>
Wed, 29 Jan 2025 20:24:51 +0000 (16:24 -0400)
Sponsored-by: Kevin Mueller
Creds.hs
Database/Benchmark.hs
Database/Init.hs
P2P/Address.hs
P2P/Auth.hs
Remote/Helper/AWS.hs

index 3bbf6f7b28051c652f15fc0a6a02c61696d90d17..02fc67c3a9c6733e558f27d53be13ed01accbe66 100644 (file)
--- a/Creds.hs
+++ b/Creds.hs
@@ -42,12 +42,11 @@ import qualified Utility.FileIO as F
 import qualified Data.ByteString.Lazy.Char8 as L8
 import qualified Data.ByteString.Char8 as S8
 import qualified Data.Map as M
-import qualified System.FilePath.ByteString as P
 
 {- A CredPair can be stored in a file, or in the environment, or
  - in a remote's configuration. -}
 data CredPairStorage = CredPairStorage
-       { credPairFile :: FilePath
+       { credPairFile :: OsPath
        , credPairEnvironment :: (String, String)
        , credPairRemoteField :: RemoteConfigField
        }
@@ -196,21 +195,21 @@ existsCacheCredPair storage =
 
 {- Stores the creds in a file inside gitAnnexCredsDir that only the user
  - can read. -}
-writeCreds :: Creds -> FilePath -> Annex ()
+writeCreds :: Creds -> OsPath -> Annex ()
 writeCreds creds file = do
        d <- fromRepo gitAnnexCredsDir
        createAnnexDirectory d
-       liftIO $ writeFileProtected (d P.</> toRawFilePath file) creds
+       liftIO $ writeFileProtected (d </> file) creds
 
-readCreds :: FilePath -> Annex (Maybe Creds)
+readCreds :: OsPath -> Annex (Maybe Creds)
 readCreds f = do
-       f' <- toOsPath . toRawFilePath <$> credsFile f
+       f' <- credsFile f
        liftIO $ catchMaybeIO $ decodeBS . S8.unlines . fileLines'
                <$> F.readFile' f'
 
-credsFile :: FilePath -> Annex FilePath
+credsFile :: OsPath -> Annex OsPath
 credsFile basefile = do
-       d <- fromRawFilePath <$> fromRepo gitAnnexCredsDir
+       d <- fromRepo gitAnnexCredsDir
        return $ d </> basefile
 
 encodeCredPair :: CredPair -> Creds
@@ -221,10 +220,10 @@ decodeCredPair creds = case lines creds of
        l:p:[] -> Just (l, p)
        _ -> Nothing
 
-removeCreds :: FilePath -> Annex ()
+removeCreds :: OsPath -> Annex ()
 removeCreds file = do
        d <- fromRepo gitAnnexCredsDir
-       liftIO $ removeWhenExistsWith R.removeLink (d P.</> toRawFilePath file)
+       liftIO $ removeWhenExistsWith R.removeLink (fromOsPath (d </> file))
 
 includeCredsInfo :: ParsedRemoteConfig -> CredPairStorage -> [(String, String)] -> Annex [(String, String)]
 includeCredsInfo pc@(ParsedRemoteConfig cm _) storage info = do
index 552236df95cb80448b9d33f58e47d6ef8e64e92f..d2296dc33c24844ae3406f234254acf34a869bed 100644 (file)
@@ -26,13 +26,12 @@ import qualified Data.ByteString.Short as S (toShort)
 import qualified Data.ByteString.Char8 as B8
 import System.Random
 import Control.Concurrent
-import qualified System.FilePath.ByteString as P
 #endif
 
 benchmarkDbs :: CriterionMode -> Integer -> Annex ()
 #ifdef WITH_BENCHMARK
-benchmarkDbs mode n = withTmpDirIn "." (toOsPath "benchmark") $ \tmpdir -> do
-       db <- benchDb (toRawFilePath tmpdir) n
+benchmarkDbs mode n = withTmpDirIn (literalOsPath ".") (literalOsPath "benchmark") $ \tmpdir -> do
+       db <- benchDb tmpdir n
        liftIO $ runMode mode
                [ bgroup "keys database"
                        [ getAssociatedFilesHitBench db
@@ -93,7 +92,7 @@ keyN n = mkKey $ \k -> k
        }
 
 fileN :: Integer -> TopFilePath
-fileN n = asTopFilePath (toRawFilePath ("file" ++ show n))
+fileN n = asTopFilePath (toOsPath ("file" ++ show n))
 
 keyMiss :: Key
 keyMiss = keyN 0 -- 0 is never stored
@@ -103,7 +102,7 @@ fileMiss = fileN 0 -- 0 is never stored
 
 data BenchDb = BenchDb H.DbQueue Integer (MVar Integer)
 
-benchDb :: RawFilePath -> Integer -> Annex BenchDb
+benchDb :: OsPath -> Integer -> Annex BenchDb
 benchDb tmpdir num = do
        liftIO $ putStrLn $ "setting up database with " ++ show num ++ " items"
        initDb db SQL.createTables
@@ -115,6 +114,6 @@ benchDb tmpdir num = do
        mv <- liftIO $ newMVar 1
        return (BenchDb h num mv)
   where
-       db = tmpdir P.</> toRawFilePath (show num </> "db")
+       db = tmpdir </> toOsPath (show num) </> literalOsPath "db"
 
 #endif /* WITH_BENCHMARK */
index 6f7ba09faf0f6508808d51075c6a466e025be314..7a07beabde9fa5d1eeefbef875a6f2c7eeefe003 100644 (file)
@@ -20,7 +20,6 @@ import Database.RawFilePath
 import Database.Persist.Sqlite
 import Lens.Micro
 import qualified Data.Text as T
-import qualified System.FilePath.ByteString as P
 
 {- Ensures that the database is freshly initialized. Deletes any
  - existing database. Pass the migration action for the database.
@@ -30,26 +29,26 @@ import qualified System.FilePath.ByteString as P
  - file causes Sqlite to always use the same permissions for additional
  - files it writes later on
  -}
-initDb :: P.RawFilePath -> SqlPersistM () -> Annex ()
+initDb :: OsPath -> SqlPersistM () -> Annex ()
 initDb db migration = do
-       let dbdir = P.takeDirectory db
-       let tmpdbdir = dbdir <> ".tmp"
-       let tmpdb = tmpdbdir P.</> "db"
-       let tmpdb' = T.pack (fromRawFilePath tmpdb)
+       let dbdir = takeDirectory db
+       let tmpdbdir = dbdir <> literalOsPath ".tmp"
+       let tmpdb = tmpdbdir </> literalOsPath "db"
+       let tmpdb' = fromOsPath tmpdb
        createAnnexDirectory tmpdbdir
 #if MIN_VERSION_persistent_sqlite(2,13,3)
-       liftIO $ runSqliteInfo' tmpdb (enableWAL tmpdb') migration
+       liftIO $ runSqliteInfo' tmpdb' (enableWAL tmpdb') migration
 #else
        liftIO $ runSqliteInfo (enableWAL tmpdb') migration
 #endif
        setAnnexDirPerm tmpdbdir
        -- Work around sqlite bug that prevents it from honoring
        -- less restrictive umasks.
-       liftIO $ R.setFileMode tmpdb =<< defaultFileMode
+       liftIO $ R.setFileMode tmpdb' =<< defaultFileMode
        setAnnexFilePerm tmpdb
        liftIO $ do
-               void $ tryIO $ removeDirectoryRecursive (fromRawFilePath dbdir)
-               R.rename tmpdbdir dbdir
+               void $ tryIO $ removeDirectoryRecursive dbdir
+               R.rename (fromOsPath tmpdbdir) (fromOsPath dbdir)
 
 {- Make sure that the database uses WAL mode, to prevent readers
  - from blocking writers, and prevent a writer from blocking readers.
@@ -59,6 +58,6 @@ initDb db migration = do
  -
  - Note that once WAL mode is enabled, it will persist whenever the
  - database is opened. -}
-enableWAL :: T.Text -> SqliteConnectionInfo
+enableWAL :: RawFilePath -> SqliteConnectionInfo
 enableWAL db = over walEnabled (const True) $ 
-       mkSqliteConnectionInfo db
+       mkSqliteConnectionInfo (T.pack (fromRawFilePath db))
index a7b3c6db07cd92c05e1cf096ede5eeb578c276af..1a3186aca93b96d1894705b37f74f2999cf26edd 100644 (file)
@@ -5,6 +5,8 @@
  - Licensed under the GNU AGPL version 3 or higher.
  -}
 
+{-# LANGUAGE OverloadedStrings #-}
+
 module P2P.Address where
 
 import qualified Annex
@@ -75,24 +77,24 @@ storeP2PAddress addr = do
        addrs <- loadP2PAddresses
        unless (addr `elem` addrs) $ do
                let s = unlines $ map formatP2PAddress (addr:addrs)
-               let tmpnam = p2pAddressCredsFile ++ ".new"
+               let tmpnam = p2pAddressCredsFile <> literalOsPath ".new"
                writeCreds s tmpnam
                tmpf <- credsFile tmpnam
                destf <- credsFile p2pAddressCredsFile
                -- This may be run by root, so make the creds file
                -- and directory have the same owner and group as
                -- the git repository directory has.
-               st <- liftIO . R.getFileStatus . toRawFilePath
-                       =<< Annex.fromRepo repoLocation
-               let fixowner f = R.setOwnerAndGroup (toRawFilePath f) (fileOwner st) (fileGroup st)
+               st <- liftIO . R.getFileStatus . fromOsPath
+                       =<< Annex.fromRepo repoPath
+               let fixowner f = R.setOwnerAndGroup (fromOsPath f) (fileOwner st) (fileGroup st)
                liftIO $ do
                        fixowner tmpf
                        fixowner (takeDirectory tmpf)
                        fixowner (takeDirectory (takeDirectory tmpf))
                        renameFile tmpf destf
 
-p2pAddressCredsFile :: FilePath
-p2pAddressCredsFile = "p2paddrs"
+p2pAddressCredsFile :: OsPath
+p2pAddressCredsFile = literalOsPath "p2paddrs"
 
 torAppName :: AppName
 torAppName = "tor-annex"
index 346b781b374ccbb0e42b4df182d5438e85494a09..20a8ce460d105732dbc0fc5b5bc53057113b7dde 100644 (file)
@@ -5,6 +5,8 @@
  - Licensed under the GNU AGPL version 3 or higher.
  -}
 
+{-# LANGUAGE OverloadedStrings #-}
+
 module P2P.Auth where
 
 import Annex.Common
@@ -35,8 +37,8 @@ storeP2PAuthToken t = do
                let d = unlines $ map (T.unpack . fromAuthToken) (t:ts)
                writeCreds d p2pAuthCredsFile
 
-p2pAuthCredsFile :: FilePath
-p2pAuthCredsFile = "p2pauth"
+p2pAuthCredsFile :: OsPath
+p2pAuthCredsFile = literalOsPath "p2pauth"
 
 -- | Loads the AuthToken to use when connecting with a given P2P address.
 --
@@ -59,8 +61,9 @@ storeP2PRemoteAuthToken addr t = writeCreds
        (T.unpack $ fromAuthToken t)
        (addressCredsFile addr)
 
-addressCredsFile :: P2PAddress -> FilePath
+addressCredsFile :: P2PAddress -> OsPath
 -- We can omit the port and just use the onion address for the creds file,
 -- because any given tor hidden service runs on a single port and has a
 -- unique onion address.
-addressCredsFile (TorAnnex (OnionAddress onionaddr) _port) = onionaddr
+addressCredsFile (TorAnnex (OnionAddress onionaddr) _port) =
+       toOsPath onionaddr
index 0f5f4b885a28176c092d8e41c883da56187bca36..92608ee0a844691bf5c193499a0cf2c32b2a1808 100644 (file)
@@ -23,7 +23,7 @@ import Data.Text (Text)
 
 creds :: UUID -> CredPairStorage
 creds u = CredPairStorage
-       { credPairFile = fromUUID u
+       { credPairFile = literalOsPath (fromUUID u)
        , credPairEnvironment = ("AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY")
        , credPairRemoteField = s3credsField
        }